package com.shirley.pers.zhufengfmvi.media;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;

import com.shirley.pers.zhufengfmvi.Constants;

import java.io.IOException;

public class PlayService extends Service implements MediaPlayer.OnPreparedListener {

    private MediaPlayer mPlayer;

    public PlayService() {
    }

    @Override
    public void onCreate() {
        super.onCreate();
        mPlayer = new MediaPlayer();
        mPlayer.setOnPreparedListener(this);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (intent != null) {
            //TODO:处理请求
            long mAlbumId = intent.getLongExtra(Constants.EXTRA_ALBUM_ID, -1);
            long mTrackId = intent.getLongExtra(Constants.EXTRA_TRACK_ID, -1);
        }
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public IBinder onBind(Intent intent) {
        return new Controller();
    }

    @Override
    public void onDestroy() {
        if (mPlayer != null) {
            if (mPlayer.isPlaying()) {
                mPlayer.stop();
            }
            mPlayer.release();
            mPlayer = null;
        }
        super.onDestroy();
    }

    /**
     * 进行播放，音平
     * @param url
     */
    private void playMusic(String url){
        if (url != null) {
            //1；在播放之前，应该停止播放中的内容，并且重置所有的MesiaPlayer的状态.
            if (mPlayer.isPlaying()) {
                mPlayer.stop();
            }
            mPlayer.reset();//清空所有的状态，才可以继续设置新的地址。
            //2：设置数据源
            try {
                mPlayer.setDataSource(url);

                //3:设置好数据源，需要进行缓冲,预先加载网路数据
                //mPlayer.prepare();//同步代码，会足赛线程，不要再主线程使用
                mPlayer.prepareAsync();//异步代码，准备成功，将会调用onPrePareListener的回调方法。
                //4.需要注意，在onCreate3中设置OnPrePareListener
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 当MediaPlayer已经准备成功，可以进行播放的时候，回调
     * Called when the media file is ready for playback.
     *
     * @param mp the MediaPlayer that is ready for playback
     */
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.start();
    }

    public class Controller extends Binder {
        /**
         * 播放
         */
        public void play() {
        }

        /**
         * 暂停
         */
        public void pause() {
        }

        /**
         * 停止
         */
        public void stop() {
        }

        /**
         * 上一首
         */
        public void prev() {
        }

        /**
         * 下一首
         */
        public void next() {
        }
    }
}
